More than half of all software failures are thought to be re-occurrences of known problems. While such a statistic might appear encouraging, discovering whether a reported problem is a known problem is nevertheless time consuming. Such diagnosis is usually manually performed by skilled software support staff and is thus expensive. A need thus exists for automated methods and systems for discovering similarities in reported software problems.
Inferring relationships from natural language descriptions of problem reports is a challenging problem. However, problem reports generated by software components frequently contain structured diagnostic information, which is more useful for automated matching than semi-structured or unstructured symptom descriptions provided by humans. Call-stack traces are the most prevalent type of information collected by software systems for post-failure diagnosis, for example, when a system ‘hangs’ or ‘crashes’. A function name is pushed each time the function is called and popped each time the function returns. Call-stacks may thus be used to reconstruct the sequence of function calls leading up to a failure.
Stack trace matching is a useful way of identifying repeat occurrences of a software problem, particularly hard failures leading to a system crash. Normalization of stack traces prior to matching provides improved match results. Two ingredients of normalization are: (1) removal of function names from the stack that do not provide information about the nature of the problem or failure, and (2) removal of recursive function calls from the stack.
Identification of function names of error handling routines is important in stack trace matching. This is analogous to stop word removal in the information retrieval domain. In document matching, stop words only increase complexity and may decrease classification accuracy to a small extent. However, identification of function names of error handling routines in stack trace matching can greatly affect the quality of the matching results.
Existing approaches for identifying such function names include: (1) provision of a list of such function names by a domain expert, and (2) assuming that frequently appearing functions are uninformative. The second approach is based on the frequency based statistical method commonly used in the information retrieval domain. However, both approaches have distinct disadvantages. The first is expensive on account of requiring human effort. Some disadvantages of the second approach include:                a large corpus of documents is required to provide reliable results,        if the document class distribution is non-uniform, a wrong set of function names may be identified as uninformative (for example, if software component a is experiencing more problems than software component b, then the function names appearing in call-stacks of software component a are more likely to be identified as uninformative, even if those function names are informative), and        the frequency threshold above which a word is considered a stop-word is ad-hoc and does not have an objective foundation.        
U.S. Patent Publication No. 20050028145, assigned by the inventors Amy H. Kang et al. to Sun Microsystems Inc. and published on Feb. 3, 2005, relates to a flexible error trace mechanism that records trace elements to identify errors. The errors may be debugged using information in the error trace elements. In particular, instrument software and libraries are disclosed for generating a stack that is helpful in identifying the root cause of the problem, even when the default error messages may not be very useful for identifying the root cause of the problem. However, identification of an error handling routine from a collection of call stack traces is not disclosed.
U.S. Pat. No. 5,928,369 issued to Keyser et al. on Jul. 27, 1999 and assigned to Synopsis, Inc., relates to an automatic support system and method which compare a user submitted stack trace to a reference stack trace associated with a known system error. However, identification of uninformative function names in call-stack traces is not disclosed.
U.S. Patent Publication No. 20050257086, assigned by the inventors Edward Triou JR et al. to Microsoft Corporation and published on Nov. 17, 2005, relates to systems and methods for automated classification and analysis of large volumes of test result data. The classification may be based on call-stack traces. However, identification of uninformative function names in call-stack traces is not disclosed.
None of the foregoing documents appear to disclose a method or system for identifying uninformative function names in call-stack traces, as described hereinafter.